home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / dskut / newpark.zip / PARK.ASM < prev    next >
Assembly Source File  |  1986-05-03  |  14KB  |  295 lines

  1.               PAGE           66,132
  2. ;
  3. ; THIS IS THE START OF THE LOCAL DATA AND EXECUTABLE CODE
  4. ;
  5. CODE_SEG      SEGMENT
  6.               ASSUME         CS:CODE_SEG
  7.               ORG            100H
  8. BEGIN:        JMP            PARK
  9.               INT            20H
  10. CYLNUM0       DW             0
  11. CYLNUM1       DW             0
  12. PARK:
  13.               PUSH           AX
  14.               PUSH           CX
  15.               PUSH           DX
  16.               PUSH           ES
  17. ;
  18. ;  MOVE DRIVE 0 AS FAR AS POSSIBLE IN STEPS OF 100 TRACKS
  19. ;
  20. SEEK0100:     MOV            AH,0CH              ; SEEK
  21.               MOV            AL,1                ; GOTTA HAVE A SECTOR COUNT
  22.               MOV            DL,80H              ; DRIVE 0
  23.               MOV            DH,0                ; GOTTA HAVE A HEAD NUMBER
  24.               MOV            CX,CYLNUM0          ; GET CYLINDER NUMBER
  25.               ADD            CX,100              ; INCREMENT BY 100
  26.               MOV            CYLNUM0,CX          ; PUT IT BACK
  27.               XCHG           CL,CH               ; PUT LO ORDER IN CH
  28.               SAL            CL,1                ; PUT HI IN TOP OF CL
  29.               SAL            CL,1                ; PUT HI IN TOP OF CL
  30.               SAL            CL,1                ; PUT HI IN TOP OF CL
  31.               SAL            CL,1                ; PUT HI IN TOP OF CL
  32.               SAL            CL,1                ; PUT HI IN TOP OF CL
  33.               SAL            CL,1                ; PUT HI IN TOP OF CL
  34.               INC            CL                  ; NOW SAY SECTOR 1
  35.               INT            13H
  36.               MOV            AH,01H              ; CHECK STATUS
  37.               MOV            AL,1                ; GOTTA HAVE A SECTOR COUNT
  38.               MOV            DL,80H              ; DRIVE 0
  39.               MOV            DH,0                ; GOTTA HAVE A HEAD NUMBER
  40.               MOV            CX,1                ; CYL 0 SECTOR 1
  41.               INT            13H
  42.               OR             AL,AL
  43.               JZ             SEEK0100
  44.               MOV            AX,CYLNUM0
  45.               SUB            AX,100
  46.               MOV            CYLNUM0,AX
  47. ;
  48. ;  MOVE DRIVE 0 AS FAR AS POSSIBLE IN STEPS OF 10 TRACKS
  49. ;
  50. SEEK010:      MOV            AH,0CH              ; SEEK
  51.               MOV            AL,1                ; GOTTA HAVE A SECTOR COUNT
  52.               MOV            DL,80H              ; DRIVE 0
  53.               MOV            DH,0                ; GOTTA HAVE A HEAD NUMBER
  54.               MOV            CX,CYLNUM0          ; GET CYLINDER NUMBER
  55.               ADD            CX,10               ; INCREMENT BY 10
  56.               MOV            CYLNUM0,CX          ; PUT IT BACK
  57.               XCHG           CL,CH               ; PUT LO ORDER IN CH
  58.               SAL            CL,1                ; PUT HI IN TOP OF CL
  59.               SAL            CL,1                ; PUT HI IN TOP OF CL
  60.               SAL            CL,1                ; PUT HI IN TOP OF CL
  61.               SAL            CL,1                ; PUT HI IN TOP OF CL
  62.               SAL            CL,1                ; PUT HI IN TOP OF CL
  63.               SAL            CL,1                ; PUT HI IN TOP OF CL
  64.               INC            CL                  ; NOW SAY SECTOR 1
  65.               INT            13H
  66.               MOV            AH,01H              ; CHECK STATUS
  67.               MOV            AL,1                ; GOTTA HAVE A SECTOR COUNT
  68.               MOV            DL,80H              ; DRIVE 0
  69.               MOV            DH,0                ; GOTTA HAVE A HEAD NUMBER
  70.               MOV            CX,1                ; CYL 0 SECTOR 1
  71.               INT            13H
  72.               OR             AL,AL
  73.               JZ             SEEK010
  74.               MOV            AX,CYLNUM0
  75.               SUB            AX,10
  76.               MOV            CYLNUM0,AX
  77. ;
  78. ;  MOVE DRIVE 0 AS FAR AS POSSIBLE IN STEPS OF 1 TRACK
  79. ;
  80. SEEK01:       MOV            AH,0CH              ; SEEK
  81.               MOV            AL,1                ; GOTTA HAVE A SECTOR COUNT
  82.               MOV            DL,80H              ; DRIVE 0
  83.               MOV            DH,0                ; GOTTA HAVE A HEAD NUMBER
  84.               INC            CYLNUM0             ; INCREMENT CYLINDER NUM
  85.               MOV            CX,CYLNUM0          ; GET CYL NUMBER
  86.               XCHG           CL,CH               ; PUT LO ORDER IN CH
  87.               SAL            CL,1                ; PUT HI IN TOP OF CL
  88.               SAL            CL,1                ; PUT HI IN TOP OF CL
  89.               SAL            CL,1                ; PUT HI IN TOP OF CL
  90.               SAL            CL,1                ; PUT HI IN TOP OF CL
  91.               SAL            CL,1                ; PUT HI IN TOP OF CL
  92.               SAL            CL,1                ; PUT HI IN TOP OF CL
  93.               INC            CL                  ; NOW SAY SECTOR 1
  94.               INT            13H
  95.               MOV            AH,01H              ; CHECK STATUS
  96.               MOV            AL,1                ; GOTTA HAVE A SECTOR COUNT
  97.               MOV            DL,80H              ; DRIVE 0
  98.               MOV            DH,0                ; GOTTA HAVE A HEAD NUMBER
  99.               MOV            CX,1                ; CYL 0 SECTOR 1
  100.               INT            13H
  101.               OR             AL,AL
  102.               JZ             SEEK01
  103.               DEC            CYLNUM0
  104.               CMP            CYLNUM0,0
  105.               JE             NODRIVE0
  106.               MOV            AX,CYLNUM0
  107.               PUSH           DS
  108.               POP            ES
  109.               LEA            DX,CYLDEC0
  110.               CALL           DECIMAL_CONVERT
  111.               MOV            AH,9
  112.               LEA            DX,CYLMSG0
  113.               INT            21H
  114. NODRIVE0:
  115. ;
  116. ;  MOVE DRIVE 1 AS FAR AS POSSIBLE IN STEPS OF 100 TRACKS
  117. ;
  118. SEEK1100:     MOV            AH,0CH              ; SEEK
  119.               MOV            AL,1                ; GOTTA HAVE A SECTOR COUNT
  120.               MOV            DL,81H              ; DRIVE 1
  121.               MOV            DH,0                ; GOTTA HAVE A HEAD NUMBER
  122.               MOV            CX,CYLNUM1          ; GET CYLINDER NUMBER
  123.               ADD            CX,100              ; INCREMENT BY 100
  124.               MOV            CYLNUM1,CX          ; PUT IT BACK
  125.               XCHG           CL,CH               ; PUT LO ORDER IN CH
  126.               SAL            CL,1                ; PUT HI IN TOP OF CL
  127.               SAL            CL,1                ; PUT HI IN TOP OF CL
  128.               SAL            CL,1                ; PUT HI IN TOP OF CL
  129.               SAL            CL,1                ; PUT HI IN TOP OF CL
  130.               SAL            CL,1                ; PUT HI IN TOP OF CL
  131.               SAL            CL,1                ; PUT HI IN TOP OF CL
  132.               INC            CL                  ; NOW SAY SECTOR 1
  133.               INT            13H
  134.               MOV            AH,01H              ; CHECK STATUS
  135.               MOV            AL,1                ; GOTTA HAVE A SECTOR COUNT
  136.               MOV            DL,81H              ; DRIVE 1
  137.               MOV            DH,0                ; GOTTA HAVE A HEAD NUMBER
  138.               MOV            CX,1                ; CYL 0 SECTOR 1
  139.               INT            13H
  140.               OR             AL,AL
  141.               JZ             SEEK1100
  142.               MOV            AX,CYLNUM1
  143.               SUB            AX,100
  144.               MOV            CYLNUM1,AX
  145. ;
  146. ;  MOVE DRIVE 1 AS FAR AS POSSIBLE IN STEPS OF 10 TRACKS
  147. ;
  148. SEEK110:      MOV            AH,0CH              ; SEEK
  149.               MOV            AL,1                ; GOTTA HAVE A SECTOR COUNT
  150.               MOV            DL,81H              ; DRIVE 1
  151.               MOV            DH,0                ; GOTTA HAVE A HEAD NUMBER
  152.               MOV            CX,CYLNUM1          ; GET CYLINDER NUMBER
  153.               ADD            CX,10               ; INCREMENT BY 10
  154.               MOV            CYLNUM1,CX          ; PUT IT BACK
  155.               XCHG           CL,CH